// 引入axios
import axios from 'axios'

// 引入字符串查询工具
import queryString from 'querystring'

import router from '../router/index'

// 设置一个基础地址
let baseUrl = '/api'
// 请求拦截器
axios.interceptors.request.use(req => {
    //   给请求头设置token
    req.headers.authorization = sessionStorage.getItem("userinfo") ?
        JSON.parse(sessionStorage.getItem("userinfo")).token : null
    return req
})


// 响应拦截器
axios.interceptors.response.use(res => {
    // 全局错误拦截
    if (res.data.msg == '请设置请求头，并携带验证字符串') {
        router.push('/login')
        return
    }
    if (res.data.msg == '登录已过期或访问权限受限') {
        router.push('/login')
        return
    }
    return res.data
})


// 封装统一get方法
// url:接口地址
//params ：参数

export const get = (url, params = {}) => {
    return new Promise((resolve, reject) => {
        axios.get(baseUrl + url, {
            params
        })
            .then(res => {
                resolve(res)
            })
            .catch(err => {
                reject(err)
            })
    })
}

/* 
统一封装post方法
url: 接口地址
params : 参数
isFile: 是否含有上传文件
*/
export const post = (url, params = {}, isFile = false) => {
    let data = {};
    if (isFile) {
        //  如果有上传文件，我们就转化成为FormData格式、
        data = new FormData();
        for (let i in params) {
            data.append(i, params[i])
        }
    } else {
        data = queryString.stringify(params)
    }
    return new Promise((resolve, reject) => {
        axios.post(baseUrl + url, data)
            .then((res) => {
                resolve(res)
            })
            .catch((err) => {
                reject(err)
            })
    })
}
